package com.ruoyi.video.service;

import java.util.List;

import com.ruoyi.video.domain.VideoCamera;
import com.ruoyi.video.domain.VideoStream;
import com.ruoyi.video.domain.VideoTree;

/**
 * 摄像机Service接口
 * 
 * @author ruoyi
 * @date 2024-12-09
 */
public interface IVideoCameraService 
{

    /**
     * 查询摄像机列表
     *
     * @param videoCamera 摄像机
     * @return 摄像机集合
     */
    public List<VideoTree> buildingTree(VideoCamera videoCamera);

    /**
     * 查询摄像机的流
     *
     * @param id 摄像机主键
     * @return 摄像机
     */
    public VideoStream getVideoCameraStream(Long id);

    /**
     * 摄像机截图
     *
     * @param id 摄像机主键
     * @return 摄像机
     */
    public String snapVideoCamera(Long id);

    /**
     * 查询摄像机
     *
     * @param ip 摄像机IP
     * @param type 摄像机接入方式
     * @return 摄像机
     */
    public VideoCamera selectVideoCameraByIp(String ip,String type);

    /**
     * 查询摄像机
     *
     * @param code 摄像机代码
     * @return 摄像机
     */
    public VideoCamera selectVideoCameraByCode(String code);

    /**
     * 查询摄像机
     * 
     * @param id 摄像机主键
     * @return 摄像机
     */
    public VideoCamera selectVideoCameraById(Long id);

    /**
     * 查询摄像机列表
     * 
     * @param videoCamera 摄像机
     * @return 摄像机集合
     */
    public List<VideoCamera> selectVideoCameraList(VideoCamera videoCamera);

    /**
     * 新增摄像机
     * 
     * @param videoCamera 摄像机
     * @return 结果
     */
    public int insertVideoCamera(VideoCamera videoCamera);

    /**
     * 修改摄像机
     * 
     * @param videoCamera 摄像机
     * @return 结果
     */
    public int updateVideoCamera(VideoCamera videoCamera);

    /**
     * 批量删除摄像机
     * 
     * @param ids 需要删除的摄像机主键集合
     * @return 结果
     */
    public int deleteVideoCameraByIds(Long[] ids);

    /**
     * 删除摄像机信息
     * 
     * @param id 摄像机主键
     * @return 结果
     */
    public int deleteVideoCameraById(Long id);

    /**
     * 导入数据
     *
     * @param dataList 数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importData(List<VideoCamera> dataList, Boolean isUpdateSupport, String operName);
}
